﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Mvc;

namespace DHQGHN.PM0.Models.Admin
{
    public class ApplicationModel
    {
        public int AppId { get; set; }  
      
        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn chưa nhập Tên ứng dụng")]
        [Remote("CheckExistAppName", "Application", ErrorMessage = "Tên ứng dụng đã tồn tại", HttpMethod = "POST", AdditionalFields = "AppId")]
        [StringLength(100, ErrorMessage = "Độ dài tối đa là 100 ký tự")]
        [Display(Name="Tên ứng dụng")]
        public string AppName { get; set; }

        [Required(AllowEmptyStrings = false, ErrorMessage = "Bạn chưa nhập Mã ứng dụng")]
        [Remote("CheckExistAppCode", "Application", ErrorMessage = "Mã ứng dụng đã tồn tại", HttpMethod = "POST", AdditionalFields = "AppId")]
        [StringLength(50, ErrorMessage = "Độ dài tối đa là 50 ký tự")]
        [RegularExpression(@"^[a-zA-Z0-9]+[a-zA-Z0-9_.']*[a-zA-Z0-9]*$", ErrorMessage = "Mã ứng dụng không đúng định dạng")]
        [Display(Name = "Mã ứng dụng")]
        public string AppCode { get; set; }

        [Display(Name = "Mô tả")]
        [StringLength(1000, ErrorMessage = "Độ dài tối đa là 1000 ký tự")]
        public string AppDescription { get; set; }

        public int IsActive { get; set; }

        public int RecordCount { get; set; }

        public const string FIELD_ID = "AppId";
        public const string FIELD_APP_NAME = "AppName";
        public const string FIELD_APP_CODE = "AppCode";
        public const string FIELD_APP_DESCRIPTION = "AppDescription";
        public const string FIELD_IS_ACTIVE = "IsActive";
        public const string FIELD_RECORD_COUNT = "RecordCount";        

        public ApplicationModel()
        {

        }

        public ApplicationModel(DAL.Models.Admin.ApplicationModel appModel)
        {
            // TODO: Complete member initialization
            AppId = appModel.AppId;
            AppCode = appModel.AppCode;
            AppName = appModel.AppName;
            AppDescription = appModel.AppDescription;
            IsActive = appModel.IsActive;
            RecordCount = appModel.RecordCount;
        }

        internal DAL.Models.Admin.ApplicationModel toDALModel()
        {
            DAL.Models.Admin.ApplicationModel appModel = new DAL.Models.Admin.ApplicationModel
            {
                AppId = AppId,
                AppCode = AppCode,
                AppName = AppName,
                AppDescription = AppDescription,
                IsActive = IsActive,
                RecordCount = RecordCount
            };
            return appModel;
        }
    }
}
